home *** CD-ROM | disk | FTP | other *** search
/ Software USA 3 #11 / Software USA Volume 3.11.iso / mac / Games / World Builder / Ray's World Builder Demo / "Toll Booth" Code < prev    next >
Text File  |  1995-11-27  |  17KB  |  317 lines

  1. By Ray R. Dunakin III
  2.  
  3. This is the complete scene code for the scene titled “Toll Booth.” Following it is a breakdown of the code into sections, with eplanations of each section.
  4.  
  5. ***************************************************
  6.  
  7. IF{TEXT$=DOWN}THEN
  8.     MOVE{PLAYER@}TO{CREATURE ROOM}
  9. EXIT
  10. IF{TEXT$=SEARCH}THEN
  11.     PRINT{..................................}
  12.     PRINT{There is a pile of trash in the corner.}
  13. EXIT
  14. IF{TEXT$=TALK}THEN
  15.     PRINT{..................................}
  16.     PRINT{ATTENDANT: "The toll to leave this world is $10. Would you like to pay the toll now?"}
  17. EXIT
  18. IF{TEXT$=GIVE}OR{TEXT$=OFFER}THEN
  19.     PRINT{..................................}
  20.     IF{TEXT$=MONEY}OR{TEXT$=CASH}THEN
  21.         IF{CASH>PLAYER@}OR{X1#<10}THEN
  22.             PRINT{ATTENDANT: "I'm sorry, but you don't have enough cash to pay the toll."}
  23.         EXIT
  24.         MOVE{CASH}TO{STORAGE@}
  25.         MOVE{BARRIER.1}TO{STORAGE@}
  26.         PRINT{ATTENDANT: "Thank you. You may leave at any time."}
  27.         PRINT{The electrical barrier is off, allowing passage through the doorway SOUTH.}
  28.     EXIT
  29.     PRINT{ATTENDANT: "I'm sorry, I can't take anything but cash."}
  30. EXIT
  31. IF{TEXT$=PAY}OR{TEXT$=YES}THEN
  32.     PRINT{..................................}
  33.     IF{CASH>PLAYER@}OR{X1#<10}THEN
  34.         PRINT{ATTENDANT: "I'm sorry, but you don't have enough cash to pay the toll."}
  35.     EXIT
  36.     MOVE{CASH}TO{STORAGE@}
  37.     MOVE{BARRIER.1}TO{STORAGE@}
  38.     PRINT{ATTENDANT: "Thank you. You may leave at any time."}
  39.     PRINT{The electrical barrier is off, allowing passage through the doorway SOUTH.}
  40. EXIT
  41. IF{TEXT$==NO}THEN
  42.     PRINT{..................................}
  43.     PRINT{ATTENDANT: "Ok, when you want to leave just pay the toll."}
  44. EXIT
  45. IF{TEXT$=SHOOT}OR{TEXT$=HIT}OR{TEXT$=FIRE}OR{TEXT$=SWING}OR{TEXT$=THROW}OR{TEXT$=BREAK}THEN
  46.     PRINT{..................................}
  47.     IF{TEXT$=BARRIER}THEN
  48.         PRINT{The barrier is unaffected by your attack.}
  49.     EXIT
  50.     IF{TEXT$=GLASS}OR{TEXT$=BOOTH}THEN
  51.         PRINT{The toll booth is protected by unbreakable glass.}
  52.     EXIT
  53.     IF{TEXT$=COMPUTER}THEN
  54.         PRINT{That might damage whatever is inside.}
  55.     EXIT
  56.     PRINT{ATTENDANT: "Don't waste your time, stupid! This booth is impervious to any weapons! So there."}
  57. EXIT
  58. IF{TEXT$=OPEN}THEN
  59.     PRINT{..................................}
  60.     IF{TEXT$=BARRIER}THEN
  61.         PRINT{The barrier can only be opened by the attendant, when you pay the toll.}
  62.     EXIT
  63.     IF{TEXT$=GLASS}OR{TEXT$=BOOTH}THEN
  64.         PRINT{You can't open the toll booth.}
  65.     EXIT
  66.     IF{TEXT$=COMPUTER}THEN
  67.         IF{COMPUTER.1=SCENE@}THEN
  68.             SOUND{PISTOL-COCKING.1}
  69.             MOVE{COMPUTER.1}TO{STORAGE@}
  70.             PRINT{The top of the computer comes off easily, revealing the internal components. There is a RAMchip inside.}
  71.         EXIT
  72.         PRINT{The computer is already open.}
  73.         IF{M1#<1}THEN
  74.             PRINT{There is a RAMchip in the computer.}
  75.         EXIT
  76.     EXIT
  77. END
  78. IF{TEXT$=GET}OR{TEXT$=TAKE}OR{TEXT$=MOVE}THEN
  79.     PRINT{..................................}
  80.     IF{TEXT$=TRASH}OR{TEXT$=GARBAGE}OR{TEXT$=RUBBISH}THEN
  81.         PRINT{The trash is useless, so leave it there.}
  82.     EXIT
  83.     IF{TEXT$=RAM}OR{TEXT$=CHIP}THEN
  84.         IF{COMPUTER.1>SCENE@}THEN
  85.             IF{M1#<1}AND{RAMCHIP>SCENE@}THEN
  86.                 SOUND{PISTOL-COCKING.1}
  87.                 LET{M1#=1}
  88.                 MOVE{RAMCHIP}TO{PLAYER@}
  89.                 PRINT{You now have the RAMchip.}
  90.             EXIT
  91.             PRINT{There are no more RAMchips in the computer.}
  92.         EXIT
  93.         PRINT{The computer case is closed. You have to open it before you can take out the RAMchip.}
  94.     EXIT
  95.     IF{TEXT$=COMPUTER}THEN
  96.         PRINT{The computer is too heavy to lug around.}
  97.     EXIT
  98.     IF{TEXT$=COMPONENT}THEN
  99.         PRINT{Except for the RAMchip, the rest of the computer's components are useless.}
  100.     EXIT
  101. END
  102. IF{TEXT$=SOUTH}THEN
  103.     IF{BARRIER.1=SCENE@}THEN
  104.         PRINT{.....................................}
  105.         SOUND{RADIO-SND.1}
  106.         SOUND{OUCH}
  107.         PRINT{The electrical barrier gives you a nasty shock! You can't pass through without paying the toll.}
  108.     EXIT
  109.     MOVE{PLAYER@}TO{THE GRAND FINALE}
  110. EXIT
  111. IF{CLICK$=BOOTH.1}OR{CLICK$=BARRIER.1}OR{CLICK$=COMPUTER.1}OR{CLICK$=COMPUTER.2}OR{CLICK$=BOOTH.DOOR}THEN
  112.     PRINT{.....................................}
  113. END
  114. IF{CLICK$=COMPUTER.2}AND{M1#<1}THEN
  115.     PRINT{There is a RAMchip inside the computer.}
  116. EXIT
  117.  
  118. ****************End of code**************************
  119.  
  120. In this scene, there is a passageway guarded by a toll booth. An electronic barrier blocks the passage unless the toll is paid. Nearby, there is a pile of trash, including an old computer. The player can open the computer and remove a RAMchip from it.
  121.  
  122. There is also a stairway leading down to the Creature Room. The statement below moves the player to that scene when the player enters “down:”
  123.  
  124. IF{TEXT$=DOWN}THEN
  125.     MOVE{PLAYER@}TO{CREATURE ROOM}
  126. EXIT
  127.  
  128.  
  129. If the player enters “search” the statement below prints a reply, alerting the player to the pile of trash in the corner:
  130.  
  131. IF{TEXT$=SEARCH}THEN
  132.     PRINT{..................................}
  133.     PRINT{There is a pile of trash in the corner.}
  134. EXIT
  135.  
  136. If the player tries to talk to the attendant in the toll booth, the statement below prints the attendant’s reply, which in this case is always the same:
  137.  
  138. IF{TEXT$=TALK}OR{TEXT$=ASK}OR{TEXT$=INFO}THEN
  139.     PRINT{..................................}
  140.     PRINT{ATTENDANT: "The toll to leave this world is $10. Would you like to pay the toll now?"}
  141. EXIT
  142.  
  143.  
  144. If the player offers anything to the attendant in the toll booth, the code below handles it. The only thing the attendant will accept is cash, to pay the toll:
  145.  
  146. IF{TEXT$=GIVE}OR{TEXT$=OFFER}THEN
  147.     PRINT{..................................}
  148.     IF{TEXT$=MONEY}OR{TEXT$=CASH}THEN
  149.         IF{CASH>PLAYER@}OR{X1#<10}THEN
  150.             PRINT{ATTENDANT: "I'm sorry, but you don't have enough cash to pay the toll."}
  151.         EXIT
  152.         MOVE{CASH}TO{STORAGE@}
  153.         MOVE{BARRIER.1}TO{STORAGE@}
  154.         PRINT{ATTENDANT: "Thank you. You may leave at any time."}
  155.         PRINT{The electrical barrier is off, allowing passage through the doorway SOUTH.}
  156.     EXIT
  157.     PRINT{ATTENDANT: "I'm sorry, I can't take anything but cash."}
  158. EXIT
  159.  
  160. >>>The first statement (above) detects entry of the words “give” or “offer.” If either of these has been entered, then a nested statement checks to see if the words “money” or “cash” have been entered. If this is true, then another nested statement checks to see if the player has any cash. If the player doesn’t have the “cash” object, OR if the variable X1# is less than 10, text is printed telling the player that he doesn’t have enough cash. X1# is used to keep track of how much money the player has. The cost of the toll is $10, so if the variable is less than 10, the player won’t be able to pay the toll.
  161.  
  162. If the player has the “cash” object, AND X1# is 10 or more, then the innermost statement is ignored, and the exchance is executed. The cash object is moved to storage, and the electrical barrier object (BARRIER.1) is moved to storage. Text is then printed telling the player that he may pass through at any time.
  163.  
  164. If the player offers anything besides money, then the nested statements are skipped, and text is printed telling the player that the attendant cannot accept anything but cash.<<<
  165.  
  166.  
  167. The player can also pay the tol by entering “pay” or by answering “yes” to the attendant’s question (“Would you like to pay the toll?”) The code below takes care of this:
  168.  
  169. IF{TEXT$=PAY}OR{TEXT$=YES}THEN
  170.     PRINT{..................................}
  171.     IF{CASH>PLAYER@}OR{X1#<10}THEN
  172.         PRINT{ATTENDANT: "I'm sorry, but you don't have enough cash to pay the toll."}
  173.     EXIT
  174.     MOVE{CASH}TO{STORAGE@}
  175.     MOVE{BARRIER.1}TO{STORAGE@}
  176.     PRINT{ATTENDANT: "Thank you. You may leave at any time."}
  177.     PRINT{The electrical barrier is off, allowing passage through the doorway SOUTH.}
  178. EXIT
  179.  
  180. >>>In the code above, the first statement detects the words “pay” and “yes.” If either of these words has been entered, then a nested statement checks to see if the player has the cash, AND that the cash variable equals ten. If the player does not have the cash, or the variable is less than 10, then the statement is executed and the player is told that he doesn’t have enough money for the toll.
  181.  
  182. If the player does have the cash, and X1# equals 10, then the cash is moved to storage, the barrier object (BARRIER.1) is moved to storage, and text is printed telling the player he may pass.<<<
  183.  
  184. If the player enters the word “no” in answer to the attendant’s question, the statement below prints a reply:
  185.  
  186. IF{TEXT$==NO}THEN
  187.     PRINT{..................................}
  188.     PRINT{ATTENDANT: "Ok, when you want to leave just pay the toll."}
  189. EXIT
  190.  
  191.  
  192. The section below handles any attempt the player makes to attack or damage the barrier, the toll booth, the computer, or the attendant:
  193.  
  194. IF{TEXT$=SHOOT}OR{TEXT$=HIT}OR{TEXT$=FIRE}OR{TEXT$=SWING}OR{TEXT$=THROW}OR{TEXT$=BREAK}THEN
  195.     PRINT{..................................}
  196.     IF{TEXT$=BARRIER}THEN
  197.         PRINT{The barrier is unaffected by your attack.}
  198.     EXIT
  199.     IF{TEXT$=GLASS}OR{TEXT$=BOOTH}THEN
  200.         PRINT{The toll booth is protected by unbreakable glass.}
  201.     EXIT
  202.     IF{TEXT$=COMPUTER}OR{TEXT$=CASE}THEN
  203.         PRINT{That might damage whatever is inside.}
  204.     EXIT
  205.     PRINT{ATTENDANT: "Don't waste your time, stupid! This booth is impervious to any weapons! So there."}
  206. EXIT
  207.  
  208. >>>In the section above, the first statement detects entry of any “attack” words, such as “shoot” “fire” “swing” or “throw” as well as damage words like “hit” or “break.” If any of these words have been entered, then the first nested statement checks to see if the player has specified an attack on the barrier, such as “shoot barrier.” If so, then text is printed telling the player that the barrier is impervious to his attack. If not, the statement is skipped.
  209.  
  210. The next nested statement checks to see if the player has specified an attack on the toll booth, or the glass of the booth. If so, then text is printed telling the player that the toll booth is bulletproof and can’t be damaged. If not, then this statement is also skipped.
  211.  
  212. The third nested statement checks for entry of the words “computer” or “case.” For example, “break computer.” If so, then text is printed telling the player that breaking the computer might damage the contents. If not, then this statement is ignored. 
  213.  
  214. If all the nested statements are false, they are ignored, and text is printed telling the player not to waste his time attacking the attendant.<<<
  215.  
  216.  
  217. If the player enters the word “open,” it is handled by the section of code below. The player might try to open the barrier or the toll booth, so statements are included to handle these possibilities. But the only thing in the scene that the player is allowed to open is the computer, where the player will find a RAMchip waiting to be removed:
  218.  
  219. IF{TEXT$=OPEN}THEN
  220.     PRINT{..................................}
  221.     IF{TEXT$=BARRIER}THEN
  222.         PRINT{The barrier can only be opened by the attendant, when you pay the toll.}
  223.     EXIT
  224.     IF{TEXT$=GLASS}OR{TEXT$=BOOTH}THEN
  225.         PRINT{You can't open the toll booth.}
  226.     EXIT
  227.     IF{TEXT$=COMPUTER}OR{TEXT$=CASE}THEN
  228.         IF{COMPUTER.1=SCENE@}THEN
  229.             SOUND{PISTOL-COCKING.1}
  230.             MOVE{COMPUTER.1}TO{STORAGE@}
  231.             PRINT{The top of the computer comes off easily, revealing the internal components. There is a RAMchip inside.}
  232.         EXIT
  233.         PRINT{The computer is already open.}
  234.         IF{M1#<1}THEN
  235.             PRINT{There is a RAMchip in the computer.}
  236.         EXIT
  237.     EXIT
  238. END
  239.  
  240. >>>The first statement in the code above tests for entry of the word “open.” If the player has entered “open,” then a nested statement looks for the word “barrier.” If the player has entered both “open” and “barrier,” then text is printed telling the player that the barrier can only be opened by paying the toll. If not, the statement is skipped.
  241.  
  242. The second nested statement tests for the words “glass” or “booth.” If either of these words is used with “open,” then text is printed telling the player that the tollbooth can’t be opened. If not, then the statement is skipped.
  243.  
  244. The third statement checks for the words “computer” or “case.” If either of these words has been entered along with “open,” then another statement tests to see if snf object called COMPUTER.1 is in the scene, meaning the computer is closed. If the computer is closed, COMPUTER.1 is moved to storage and text is printed telling the player that a RAMchip is inside.
  245.  
  246. If the computer is already opened, the previous statement is ignored, and text is printed telling the player that the compuer is already open. Then another statement checks to see if variable M1# is less than 1. If so, this means the RAMchip has not been removed, and text is printed that tells the player there is a RAMchip in the computer.
  247.  
  248. If the word “open” has been entered, and none of the nested statements is true, then they are ignored, and the “open” statement closes with END, allowing the program to reach the default “open” statement in the Global code.<<<
  249.  
  250.  
  251. The code below handles the verbs “get” “take” and “move.” A variable (M1#) is used to keep track of the RAMchip. If M1# is less than 1, then the chip has not been removed from the computer. If M1# equals one, it means the chip has already been taken:
  252.  
  253. IF{TEXT$=GET}OR{TEXT$=TAKE}OR{TEXT$=MOVE}THEN
  254.     PRINT{..................................}
  255.     IF{TEXT$=TRASH}OR{TEXT$=GARBAGE}OR{TEXT$=RUBBISH}THEN
  256.         PRINT{The trash is useless, so leave it there.}
  257.     EXIT
  258.     IF{TEXT$=RAM}OR{TEXT$=CHIP}THEN
  259.         IF{COMPUTER.1>SCENE@}THEN
  260.             IF{M1#<1}AND{RAMCHIP>SCENE@}THEN
  261.                 SOUND{PISTOL-COCKING.1}
  262.                 LET{M1#=1}
  263.                 MOVE{RAMCHIP}TO{PLAYER@}
  264.                 PRINT{You now have the RAMchip.}
  265.             EXIT
  266.             PRINT{There are no more RAMchips in the computer.}
  267.         EXIT
  268.         PRINT{The computer case is closed. You have to open it before you can take out the RAMchip.}
  269.     EXIT
  270.     IF{TEXT$=COMPUTER}THEN
  271.         PRINT{The computer is too heavy to lug around.}
  272.     EXIT
  273.     IF{TEXT$=COMPONENT}THEN
  274.         PRINT{Except for the RAMchip, the rest of the computer's components are useless.}
  275.     EXIT
  276. END
  277.  
  278. >>>In the code above, the first statement tests for entry of the words “get” “take” or “move.” If any of these words has been entered, a series of nested statements checks for other words specifying what the player wants to take. The first nested statement tests for the words “RAM” or “chip.” If this statement is true, then another statement tests to see if the object COMPUTER.1 is not in the scene, meaning the computer is open. Then the innermost statement checks the value of M1#. If M1# is less than one, a sound is played, the RAMchip is moved to the player, M1# is set to 1, and text is printed telling the player that he now has the RAMchip. 
  279.  
  280. If variable M1# equals one, then the innermost statement is ignored, and text is printed telling the player that there are no more RAMchips in the computer. 
  281.  
  282. If COMPUTER.1 is in the scene, both inner statements are ignored, and text is printed telling the player that the computer is not open.
  283.  
  284. If the player has not entered “ram” or “chip,” that statement is ignored, and the program continues to the next nested statement, which checks for the word “computer.” If the player tries to take the computer, this statement prints text telling the player that the computer is too heavy to take.
  285.  
  286. Another statement checks for use of the word “component,” in case the player enters something like “get component,” referring to the internal components of the computer. If this happens, the statement prints text telling the player that only the RAMchip can be removed.
  287.  
  288. Then the original “get/take” statement closes with END, allowing the program to handle any other use of these verbs in the normal manner.<<<
  289.  
  290.  
  291. The next section handles the word “south.” If the barrier object (BARRIER.1) is in
  292. the scene, then a couple of sounds are played, and text is printed telling the player that he has received a shock from the electrical barrier. If BARRIER.1 is not in the scene, then the player is moved to the next scene, titled “The Grand Finale:”
  293.  
  294. IF{TEXT$=SOUTH}THEN
  295.     IF{BARRIER.1=SCENE@}THEN
  296.         PRINT{.....................................}
  297.         SOUND{RADIO-SND.1}
  298.         SOUND{OUCH}
  299.         PRINT{The electrical barrier gives you a nasty shock! You can't pass through without paying the toll.}
  300.     EXIT
  301.     MOVE{PLAYER@}TO{THE GRAND FINALE}
  302. EXIT
  303.  
  304.  
  305. The brief statement below prints a line of periods when any of the immobile objects in the scene are clicked, before their descriptions are printed:
  306.  
  307. IF{CLICK$=BOOTH.1}OR{CLICK$=BARRIER.1}OR{CLICK$=COMPUTER.1}OR{CLICK$=COMPUTER.2}OR{CLICK$=BOOTH.DOOR}THEN
  308.     PRINT{.....................................}
  309. END
  310.  
  311.  
  312. The last statement tests for two conditions. First, if the player has clicked on COMPUTER.2, the object that shows the opened computer. And secondly, that M1# is less than one, meaning the ramchip has not yet been taken. If BOTH of these conditions are true, then text is printed telling the player that there is a RAMchip in the computer:
  313.  
  314. IF{CLICK$=COMPUTER.2}AND{M1#<1}THEN
  315.     PRINT{There is a RAMchip inside the computer.}
  316. EXIT
  317.